package rescsa.gob.pe.actividad.dao;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import rescsa.gob.pe.actividad.bean.ActividadBEAN;
import rescsa.gob.pe.actividad.service.ActividadService;
import rescsa.gob.pe.casoprueba.bean.CasoPruebaBEAN;
import rescsa.gob.pe.solicitudrequerimiento.bean.SolicitudRequerimientoBEAN;
import rescsa.gob.pe.trabajo.bean.DetalleRequerimientoActividadBEAN;

public class ActividadDAO implements ActividadService{

	SqlSessionFactory sqlMapper = null;//obtiene la configuracion del archivo
	{
		String archivo = "ConfiguracionIbatis.xml";//abrea la configuracion
		try {
			Reader reader = Resources.getResourceAsReader(archivo);
			sqlMapper = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	@Override
	public List<ActividadBEAN> ListaActividades() throws Exception {
		SqlSession session = sqlMapper.openSession();
		List lista = null;
		try {
			 lista =session.selectList("dawi.SQL_listarActividades");			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return lista;
	}

	@Override
	public List<ActividadBEAN> ListaActividadesRequerimiento(
			String codigo_solicitud_requerimiento) throws Exception {
		SqlSession session = sqlMapper.openSession();
		List lista = null;
		try {
			 lista =session.selectList("dawi.SQL_listaActividadesRequerimiento",codigo_solicitud_requerimiento);			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return lista;
	}

	@Override
	public List<ActividadBEAN> ListaActividadesRequerimientoAnalista(
			String codigo_solicitud_requerimiento) throws Exception {
		SqlSession session = sqlMapper.openSession();
		List lista = null;
		try {
			 lista =session.selectList("dawi.SQL_listaActividadesRequerimientoAnalista",codigo_solicitud_requerimiento);			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return lista;
	}

	@Override
	public DetalleRequerimientoActividadBEAN ObtenerActividad(int codigo_actividad)
			throws Exception {
		SqlSession session = sqlMapper.openSession();
		DetalleRequerimientoActividadBEAN unaactividad = null;
		try {
			unaactividad =(DetalleRequerimientoActividadBEAN)session.selectOne("dawi.SQL_obtenerOctividad",codigo_actividad);			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return unaactividad;
	}

	@Override
	public CasoPruebaBEAN ObtenerCasodePrueba(int codigo_actividad)
			throws Exception {
		SqlSession session = sqlMapper.openSession();
		CasoPruebaBEAN uncasodeprueba = null;
		try {
			uncasodeprueba =(CasoPruebaBEAN)session.selectOne("dawi.SQL_obtenerCasodeUsodePrueba",codigo_actividad);			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return uncasodeprueba;
	}

	@Override
	public String ModificarEstadoActividad(
			DetalleRequerimientoActividadBEAN detallerequerimientoactividad)
			throws Exception {
		SqlSession session = sqlMapper.openSession();
		String stroutput ="";
		try {
			stroutput = ""+session.update("dawi.SQL_ActualizarEstadoActividad", detallerequerimientoactividad);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		System.out.println("dao "+stroutput);
		return stroutput;
	}

	@Override
	public String ModificarEstadoActividadFinalizada(
			DetalleRequerimientoActividadBEAN detallerequerimientoactividad)
			throws Exception {
		SqlSession session = sqlMapper.openSession();
		String stroutput ="";
		try {
			stroutput = ""+session.update("dawi.SQL_ActualizarEstadoActividadFinalizada", detallerequerimientoactividad);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		System.out.println("dao "+stroutput);
		return stroutput;
	}

	@Override
	public String SubirArchivosaActividad(
			DetalleRequerimientoActividadBEAN detallerequerimientoactividad)
			throws Exception {
		SqlSession session = sqlMapper.openSession();
		String stroutput ="";
		try {
			stroutput = ""+session.update("dawi.SQL_SubirArchivosActualizar", detallerequerimientoactividad);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		System.out.println("dao "+stroutput);
		return stroutput;
	}

	@Override
	public String GrabaCasodePrueba(CasoPruebaBEAN casoprueba) throws Exception {
		SqlSession session = sqlMapper.openSession();
		String stroutput ="";
		try {
			stroutput = ""+session.insert("dawi.SQL_RegistrarCasoDePrueba", casoprueba);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		System.out.println("dao "+stroutput);
		return stroutput;
	}

	@Override
	public CasoPruebaBEAN ObtenerCasodePruebaxId(int id) throws Exception {
		
		SqlSession session = sqlMapper.openSession();
		CasoPruebaBEAN bean=null;
		
		try {
			bean =(CasoPruebaBEAN)session.selectOne("dawi.SQL_obtenerUltimoCodigoCasodeUsodePrueba",id);			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return bean;
	}

}
